#!/bin/bash

# 鱼C论坛闪拍监控 - 停止脚本
# 作者: SOLO Coding
# 用途: 停止后台运行的监控程序

set -e  # 遇到错误立即退出

# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
cd "$PROJECT_DIR"

# 定义PID文件
PID_FILE="$PROJECT_DIR/fishc_monitor.pid"

echo "=== 鱼C论坛闪拍监控 - 停止程序 ==="
echo "停止时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo ""

# 检查PID文件是否存在
if [ ! -f "$PID_FILE" ]; then
    echo "⚠️  未找到PID文件，监控程序可能未在后台运行"
    echo "如果程序仍在运行，可以手动查找并停止："
    echo "  ps aux | grep fishc_monitor.py"
    echo "  kill <PID>"
    exit 1
fi

# 读取PID
PID=$(cat "$PID_FILE")
echo "📋 找到进程ID: $PID"

# 检查进程是否存在
if ! ps -p "$PID" > /dev/null 2>&1; then
    echo "⚠️  进程 $PID 不存在，可能已经停止"
    echo "🧹 清理PID文件..."
    rm -f "$PID_FILE"
    echo "✅ 清理完成"
    exit 0
fi

echo "🛑 正在停止监控程序..."

# 尝试优雅停止（SIGTERM）
kill "$PID" 2>/dev/null || true

# 等待进程停止
echo "⏳ 等待进程停止..."
for i in {1..10}; do
    if ! ps -p "$PID" > /dev/null 2>&1; then
        echo "✅ 监控程序已停止"
        rm -f "$PID_FILE"
        echo "🧹 PID文件已清理"
        exit 0
    fi
    sleep 1
    echo "   等待中... ($i/10)"
done

# 如果优雅停止失败，强制停止
echo "⚠️  优雅停止失败，尝试强制停止..."
kill -9 "$PID" 2>/dev/null || true

# 再次检查
sleep 2
if ! ps -p "$PID" > /dev/null 2>&1; then
    echo "✅ 监控程序已强制停止"
    rm -f "$PID_FILE"
    echo "🧹 PID文件已清理"
else
    echo "❌ 无法停止进程 $PID，请手动处理"
    echo "手动停止命令: kill -9 $PID"
    exit 1
fi